{% extends "knn.html" %}

{% block title %}关于拉格朗日插值{% endblock %}

{% block description %}
<p><b>拉格朗日插值</b>，一种处理缺失数据、多项式插值方法。</p>
<p><b>工作原理：</b>根据数学知识，对于平面上已知的n个点（任意两点不在一条直线上）可以找到一个n-1次多项式y = a<sub>0</sub>+a<sub>1</sub>x+a<sub>2</sub>x<sup>2</sup>+...+a<sub>n-1</sub>x<sup>n-1</sup>，使此多项式曲线过这n个点。先求出过已知的n个点的n-1次多项式，由此解出拉格朗日插值多项式。</p>
<p><b>K值含义：</b>K为在缺失值前后各取K个未缺失的数据参与建模，即K为整数类型。</p>
<p><b>算法优点：</b>公式结构紧凑，在理论分析中十分方便。</p>
<p><b>算法缺点：</b>插值节点增减时，插值多项式就会随之变化，在实际计算中较为麻烦。</p>
<p><b>适用数据范围：</b>数值型数据。</p>
{% endblock %}


{% block input %}
<div class="span9">
    <form class="bs-example bs-example-form " method="post" name="knn" role="form" action="" enctype="multipart/form-data">
    {% csrf_token %}
    <!--格式-->
    <label>k值:</label>
    <input type="text" class="form-control" placeholder="请输入合适的k值" name="value_k" value="{{ k }}" required="required">
    <input type="file" name="csv" required="required" > 
    <p class="form-btn">
    <button type="submit" class="btn btn-primary btn-lg " name="ok" onclick=draw()>上传文件</button>
    </p>
    </form>
</div>
{% endblock %}


{% block resu %}
{% if result  %}

<hr>
<p><h4>分析结果 </h4></p>
<br>
<div id="lagrange" style="height:500px;margin-left:2%;margin-right:2%;"></div>
    <!-- ECharts单文件引入 -->
    <script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>
    <script type="text/javascript">
        // 基于准备好的dom，初始化echarts图表
var myChart = echarts.init(document.getElementById('lagrange')); 
myChart.showLoading({text: "图表数据正在努力加载..."});

var option = {
    title : {
        text: '数据散点图',
        subtext: '结果仅供参考'
    },
    tooltip : {
        trigger: 'axis',
        showDelay : 0,
        axisPointer:{
            show: true,
            type : 'cross',
            lineStyle: {
                type : 'dashed',
                width : 1
            }
        }
    },
    legend: {
        data: ['原始数据','插值结果']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataZoom : {show: true},
            dataView : {show: true, readOnly: false},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    xAxis : [
        {
            name :'x',
            type : 'value',
            scale:true,
            axisLabel : {
                formatter: '{value}'
            }
        }
    ],
    yAxis : [
        {
            name :'y',
            type : 'value',
            scale:true,
            axisLabel : {
                formatter: '{value}'
            }
        }
    ],
    series : {{ data|safe }}
};
        // 为echarts对象加载数据 
        myChart.hideLoading(); 
        myChart.setOption(option);
        
    </script>

<hr>
<div class="content">
<p>插值结果为：</p>
{% for i in result %}
<p>{{ i }}</p>
{% endfor %}
<br><br>
</div>

{% endif %}
{% endblock %}

